//初始化store中的数据
const initialState = {
  name: "张三",
  counter: 100
}

/**
 * 定义reducer函数: 纯函数
 * @param {参数1} state：store中的原数据，默认值为initialState
 * @param {参数2} action：通过dispatch传入的本次需要更新的action
 * @returns 返回值会作为store之后存储的state
 */
function reducer(state = initialState, action) {

  // //如果有新数据更新的时候，那么返回一个新的state
  // if (action.type === 'change_name') {
  //   //不能直接修改state，因为一旦修改state，那这个reducer就不是一个纯函数了！
  //   // state.name = action.name
  //   //利用对象的解构返回一个新 state 对象, 这样才能让界面知道state进行了修改，从而保证了数据的响应式
  //   return {...state, name: action.name}
  // }
  //
  // if (action.type === 'add_number') {
  //   return {...state, counter: state.counter + action.counter}
  // }

  //switch 代码结构优化
  switch (action.type) {
    case "change_name":
      return {...state, name: action.name }
    case "add_number":
      return {...state, counter: state.counter + action.counter}
    default:
      return state;
  }

  //如果没有新数据更新，那么返回原state
  return state;
}

module.export = reducer